package cn.apple.basic.config;

import cn.apple.basic.utils.AjaxResult;
import org.springframework.web.bind.annotation.*;

/**
 * controller的增强
 *  全局异常捕获的类
 */
@RestControllerAdvice //  增强控制器的注解，表示此类为全局异常捕获的类，可捕获所有控制器的异常
public class MyExceptionHandler {

    //  异常处理方法，捕获Exception和其子类的异常
    @ExceptionHandler
    public AjaxResult exceptionHandler(Exception e) {
        System.out.println("全局异常捕获>>>:" + e);
        //  打印异常堆栈信息
        e.printStackTrace();
        return AjaxResult.fail();
    }
}


//
//@RestControllerAdvice
//public  class  MyExceptionHandler  {
//
//    //  明确捕获RuntimeException异常类型
//    @ExceptionHandler({RuntimeException.class})
//    public  AjaxResult  exceptionHandler(RuntimeException  e)  {
//        //  记录日志，方便后续定位和解决问题
//        log.error("全局异常捕获>>>",  e);
//        //  返回具体错误信息
//        return  AjaxResult.fail(Constants.CODE_ERROR,  Constants.MESSAGE_ERROR);
//    }
//
//    //  明确捕获NullPointerException异常类型
//    @ExceptionHandler({NullPointerException.class})
//    public  AjaxResult  nullPointerExceptionHandler(NullPointerException  e)  {
//        log.error("空指针异常>>>",  e);
//        return  AjaxResult.fail(Constants.CODE_PARAM_ERROR,  Constants.MESSAGE_PARAM_ERROR);
//    }
//
//    //  明确捕获IllegalArgumentException异常类型
//    @ExceptionHandler({IllegalArgumentException.class})
//    public  AjaxResult  illegalArgumentExceptionHandler(IllegalArgumentException  e)  {
//        log.error("参数异常>>>",  e);
//        return  AjaxResult.fail(Constants.CODE_PARAM_ERROR,  Constants.MESSAGE_PARAM_ERROR);
//    }
//
//    //  明确捕获其他Exception异常类型
//    @ExceptionHandler({Exception.class})
//    public  AjaxResult  exceptionHandler(Exception  e)  {
//        log.error("其他异常>>>",  e);
//        return  AjaxResult.fail(Constants.CODE_ERROR,  Constants.MESSAGE_ERROR);
//    }
//}
